package com.king.pattem.masterworker;

import java.util.Map;
import java.util.Set;

/**
 * @author taomk
 * @version 1.0
 * @since 15-2-2 下午10:23
 */
public class Main {

	public static void main(String [] args) {
		// 固定使用5个Worker，并指定Worker
		Master m = new Master(new PlusWorker(), 5);
		for (int i = 0; i < 100; i++) {
			// 提交100个子任务
			m.submit(i);
		}
		// 开始计算
		m.execute();

		int re = 0;
		// 最终计算结果保存在此
		Map<String, Object> resultMap = m.getResultMap();
		while (resultMap.size() > 0 || !m.isComplete()) {
			// 不需要等待所有Worker都执行完，即可开始计算最终结果
			Set<String> keys = resultMap.keySet();
			String key = null;
			for (String k : keys) {
				key = k;
				break;
			}

			Integer i = null;
			if (key != null)
				i = (Integer) resultMap.get(key);

			if (i != null)
				// 最终结果
				re += i;

			if (key != null)
				// 移除已经被计算过的项
				resultMap.remove(key);
		}
		System.out.println(re);
	}
}
